package org.jaronsource.framework.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class DateJsonValueProcessor implements JsonValueProcessor {
	public static final String DEFAULT_DATE_PATTERN = DateUtils.PATTERN_DATETIME_EXT;
	private DateFormat dateFormat;

	public DateJsonValueProcessor(	String datePattern ) {
		try {
			dateFormat = new SimpleDateFormat( datePattern );
		}
		catch ( Exception ex ) {
			dateFormat = new SimpleDateFormat( DEFAULT_DATE_PATTERN );
		}
	}

	public Object processArrayValue( Object value, JsonConfig jsonConfig ) {
		return process( value );
	}

	public Object processObjectValue(	String key,
										Object value,
										JsonConfig jsonConfig ) {
		return process( value );
	}

	private Object process( Object value ) {
		if ( value == null || ! ( value instanceof Date ) ) return StringUtils.EMPTY;
		return dateFormat.format( (Date) value );
	}
}